csd: add style classes for tiled and maximized
authorMatthias Clasen <mclasen@redhat.com>
Sun, 6 Oct 2013 04:35:05 +0000 (00:35 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Sun, 6 Oct 2013 04:35:43 +0000 (00:35 -0400)
This lets us change the border radius when the window is
in one of these states.

https://bugzilla.gnome.org/show_bug.cgi?id=709215

gtk/gtkwindow.c

index 868607976a7028b89be464bd8ecfc33a9b82b227..19ec2a4222376ee8372358ca510b0f96e179fba5 100644 (file)
@@ -6252,6 +6252,25 @@ add_window_frame_style_class (GtkStyleContext *context)
   gtk_style_context_add_class (context, "window-frame");
 }
 
+static void
+update_window_style_classes (GtkWindow *window)
+{
+  GtkWindowPrivate *priv = window->priv;
+  GtkStyleContext *context;
+
+  context = gtk_widget_get_style_context (GTK_WIDGET (window));
+
+  if (priv->tiled)
+    gtk_style_context_add_class (context, "tiled");
+  else
+    gtk_style_context_remove_class (context, "tiled");
+
+  if (gtk_window_get_maximized (window))
+    gtk_style_context_add_class (context, "maximized");
+  else
+    gtk_style_context_remove_class (context, "maximized");
+}
+
 static void
 get_decoration_size (GtkWidget *widget,
                      GtkBorder *decorations)
@@ -6878,6 +6897,7 @@ gtk_window_state_event (GtkWidget           *widget,
 
   if (event->changed_mask & (GDK_WINDOW_STATE_FULLSCREEN | GDK_WINDOW_STATE_MAXIMIZED | GDK_WINDOW_STATE_TILED))
     {
+      update_window_style_classes (window);
       update_window_buttons (window);
       gtk_widget_queue_resize (widget);
     }